package game.graphics
{
	import away3d.core.managers.*;
	import engine.asset.*;
	import engine.core.*;
	import engine.graphics.*;
	import engine.graphics.postfx.*;
	import engine.graphics.resources.*;
	import engine.graphics.shader.*;
	import engine.math.*;
	import flash.display3D.*;
	import flash.geom.*;
	
	public class RxUberPostFX
	{
		private var m_textureBlitter:RxTextureBlitter;
		private var m_colorBlitter:RxColorBlitter;
		private var m_bilinearFilter:RxBilinearFilter;
		private var m_blend2Filter:RxBlendFilter;
		private var m_blend3Filter:RxBlendFilter;
		private var m_blend4Filter:RxBlendFilter;
		private var m_gaussianBlurFilter3x3:RxGaussianBlurFilter;
		private var m_gaussianBlurFilter7x7:RxGaussianBlurFilter;
		private var m_gaussianBlurFilter15x15:RxGaussianBlurFilter;
		private var m_uberFilter:RxFilter;
		private var m_uberFilterWithBlur:RxFilter;
		private var m_fsConstBuffer:RxConstantBuffer;
		private var m_renderTargetMipmaps0:RxRenderTargetMipmaps;
		private var m_renderTargetMipmaps1:RxRenderTargetMipmaps;
		private var m_blurredRenderTarget0:RxRenderTarget;
		private var m_blurredRenderTarget1:RxRenderTarget;
		private var m_bloomScale:Number;
		private var m_baseWeight:Number;
		private var m_bloomWeight:Number;
		private var m_blurChannelWeights:RxVector4;
		private var m_toneCurveStartSlope:Number;
		private var m_toneCurveEndSlope:Number;
		private var m_brightness:Number;
		private var m_contrast:Number;
		private var m_saturation:Number;
		private var m_colorTone0:RxVector4;
		private var m_colorTone1:RxVector4;
		private var m_blurWeightTexture:RxGPUTexture2D;
		private var m_wantBlur:Boolean;
		private var m_enableBlur:Boolean;
		private var m_numDownsamples:int;
		private var m_gaussianQualityOnDownsamples:uint;
		private var m_gaussianQualityOnBlurs:uint;
		private var m_downsampledRenderTargetIndices:Vector.<uint>;
		private var m_downsampledRenderTargetWeights:Vector.<Number>;
		private var m_accumRenderTargetIndices:Vector.<uint>;
		public static const GAUSSIAN_KERNEL_3x3:uint = 3;
		public static const GAUSSIAN_KERNEL_7x7:uint = 7;
		public static const GAUSSIAN_KERNEL_15x15:uint = 15;
		
		public function RxUberPostFX()
		{
			this.m_textureBlitter = null;
			this.m_colorBlitter = null;
			this.m_bilinearFilter = null;
			this.m_blend2Filter = null;
			this.m_blend3Filter = null;
			this.m_blend4Filter = null;
			this.m_gaussianBlurFilter3x3 = null;
			this.m_gaussianBlurFilter7x7 = null;
			this.m_gaussianBlurFilter15x15 = null;
			this.m_uberFilter = null;
			this.m_uberFilterWithBlur = null;
			this.m_fsConstBuffer = null;
			this.m_renderTargetMipmaps0 = null;
			this.m_renderTargetMipmaps1 = null;
			this.m_blurredRenderTarget0 = null;
			this.m_blurredRenderTarget1 = null;
			this.m_bloomScale = 10;
			this.m_baseWeight = 1;
			this.m_bloomWeight = 1;
			this.m_blurChannelWeights = new RxVector4(0, 0, 0, 0);
			this.m_toneCurveStartSlope = 1;
			this.m_toneCurveEndSlope = 1;
			this.m_brightness = 0;
			this.m_contrast = 0;
			this.m_saturation = 0;
			this.m_colorTone0 = new RxVector4(0, 0, 0, 0);
			this.m_colorTone1 = new RxVector4(1, 1, 1, 1);
			this.m_blurWeightTexture = null;
			this.m_wantBlur = false;
			this.m_enableBlur = true;
			this.m_numDownsamples = -1;
			this.m_gaussianQualityOnDownsamples = GAUSSIAN_KERNEL_7x7;
			this.m_gaussianQualityOnBlurs = GAUSSIAN_KERNEL_7x7;
			this.m_downsampledRenderTargetIndices = new Vector.<uint>(16, true);
			this.m_downsampledRenderTargetWeights = new Vector.<Number>(16, true);
			this.m_accumRenderTargetIndices = new Vector.<uint>(4, true);
		}
	}
}